/* 
 * Copyright (c) 2012, Fromentin Xavier, Schnell Michaël, Dervin Cyrielle, Brabant Quentin
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *      * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *      * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *      * The names of its contributors may not be used to endorse or promote products
 *       derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL Fromentin Xavier, Schnell Michaël, Dervin Cyrielle OR Brabant Quentin 
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
package kameleon.gui.util;

import java.io.File;

/**
 * Utility interface for file and folder names and paths.
 * 
 * @author		Schnell Michaël
 * @version		1.0
 */
public interface FileConstants extends kameleon.util.FileConstants {

	/**
	 * Default path of PNG pictures within the software java archive.
	 * 
	 * <p>Takes one parameter: the name of the picture.
	 */
	public static final String GUI_RESOURCE_FILE = 
			"/kameleon/gui/resources/%s" ; //$NON-NLS-1$

	/**
	 * Default path of flags icon within the software java archive.
	 * 
	 * <p>Takes one parameter: the lower case iso-3166 code of the 
	 * country whose flag is requested.
	 */
	public static final String GUI_FLAG_ICON_FILE = 
			"/kameleon/gui/resources/flags/%s.png" ; //$NON-NLS-1$


	/**
	 * Regular expression describing the names of the languages files.
	 */
	public static final String LANGUAGE_FILE_NAMES_REGEXP =
			String.format("%s_.*[.]properties", LANGUAGE_FILE_NAME) ; //$NON-NLS-1$

	/**
	 * Template for the absolute path of the default location of
	 * the language files.
	 */
	public static final String LANGUAGE_FILE_TEMPLATE = 
			String.format("%s%sLang_%%s.properties", //$NON-NLS-1$
					LANGUAGE_FOLDER, File.separator) ;

	/**
	 * Template for the absolute path within the software java
	 * archive of the default language files.
	 * 
	 * <p>Takes one parameter: the iso-3166 code for the requested
	 * language.
	 */
	public static final String LANGUAGE_FILE_JAR_TEMPLATE =
			"/kameleon/gui/language/Lang_%s.properties" ; //$NON-NLS-1$


	/**
	 * Name of the picture used to represent an unknown format.
	 */
	public static final String UNKNOWN_FORMAT_FILE_NAME = 
			"unknown.png" ; //$NON-NLS-1$

	/**
	 * Absolute path of the picture used to represent an unknown format.
	 */
	public static final String UNKNOWN_FORMAT_FILE = 
			String.format(GUI_RESOURCE_FILE, UNKNOWN_FORMAT_FILE_NAME) ; 

	/**
	 * Name of the icon used to represent an unknown format.
	 */
	public static final String UNKNOWN_FORMAT_ICON_FILE_NAME = 
			"unknown_mini.png" ; //$NON-NLS-1$

	/**
	 * Absolute path of the icon used to represent an unknown format.
	 */
	public static final String UNKNOWN_FORMAT_ICON_FILE = 
			String.format(GUI_RESOURCE_FILE, UNKNOWN_FORMAT_ICON_FILE_NAME) ; 


	/**
	 * Name of the icon used to represent the more information button.
	 */
	public static final String MORE_INFORMATION_FILE_NAME = 
			"More_informations.png" ; //$NON-NLS-1$

	/**
	 * Absolute path of the icon used to represent the more information
	 * button.
	 */
	public static final String MORE_INFORMATION_FILE = 
			String.format(GUI_RESOURCE_FILE, MORE_INFORMATION_FILE_NAME) ; 


	/**
	 * Name of the icon used to represent the regenerate button.
	 */
	public static final String REGENERATE_FILE_NAME = 
			"arrow_refresh.png" ; //$NON-NLS-1$

	/**
	 * Absolute path of the icon used to represent the regenerate button.
	 */
	public static final String REGENERATE_FILE = 
			String.format(GUI_RESOURCE_FILE, REGENERATE_FILE_NAME) ; 

	/**
	 * Name of the progress icon for the waiting state.
	 */
	public static final String WAITING_FILE_NAME = 
			"arrow_refresh.png" ; //$NON-NLS-1$

	/**
	 * Absolute path of the progress icon for the waiting state.
	 */
	public static final String WAITING_FILE = 
			String.format(GUI_RESOURCE_FILE, WAITING_FILE_NAME) ; 

	/**
	 * Name of the progress icon for the converting state.
	 */
	public static final String CONVERTING_FILE_NAME = 
			"page_refresh.png" ; //$NON-NLS-1$

	/**
	 * Absolute path of the progress icon for the converting state.
	 */
	public static final String CONVERTING_FILE = 
			String.format(GUI_RESOURCE_FILE, CONVERTING_FILE_NAME) ; 

	/**
	 * Name of the progress icon for the converted state.
	 */
	public static final String CONVERTED_FILE_NAME = 
			"accept.png" ; //$NON-NLS-1$

	/**
	 * Absolute path of the progress icon for the converted state.
	 */
	public static final String CONVERTED_FILE = 
			String.format(GUI_RESOURCE_FILE, CONVERTED_FILE_NAME) ; 

	/**
	 * Name of the progress icon for the error state.
	 */
	public static final String ERROR_FILE_NAME = 
			"exclamation.png" ; //$NON-NLS-1$

	/**
	 * Absolute path of the progress icon for the error state.
	 */
	public static final String ERROR_FILE = 
			String.format(GUI_RESOURCE_FILE, ERROR_FILE_NAME) ; 

	/**
	 * Name of the icon for the information text message.
	 */
	public static final String INFORMATION_FILE_NAME = 
			"error.png" ; //$NON-NLS-1$

	/**
	 * Absolute path of the icon for the information text message.
	 */
	public static final String INFORMATION_FILE = 
			String.format(GUI_RESOURCE_FILE, INFORMATION_FILE_NAME) ; 

	/**
	 * Name of the icon for the "add plug-in" message.
	 */
	public static final String ADD_PLUGIN_FILE_NAME = 
			"printer_delete.png" ; //$NON-NLS-1$

	/**
	 * Absolute path of the icon for the "add analyzer" message.
	 */
	public static final String ADD_PLUGIN_FILE = 
			String.format(GUI_RESOURCE_FILE, ADD_PLUGIN_FILE_NAME) ; 

	/**
	 * Name of the icon for the "remove plug-in" message.
	 */
	public static final String REMOVE_PLUGIN_FILE_NAME = 
			"printer_add.png" ; //$NON-NLS-1$

	/**
	 * Absolute path of the icon for the "add generator" message.
	 */
	public static final String REMOVE_PLUGIN_FILE = 
			String.format(GUI_RESOURCE_FILE, REMOVE_PLUGIN_FILE_NAME) ; 

	/**
	 * Template for views to create the absolute path of the grayed 
	 * icon used by plug-ins.
	 * 
	 * <p>Takes one parameter: the identifier of the plug-in whose
	 * picture is requested.
	 */
	public static final String GRAY_ICON  = 
			String.format("%s%s%%s_gray_icon.png", //$NON-NLS-1$
					PLUG_IN_RESOURCES_FOLDER, File.separator) ;

	/**
	 * Template for views to create the absolute path of the 
	 * icon used by plug-ins.
	 * 
	 * <p>Takes one parameter: the identifier of the plug-in whose
	 * picture is requested.
	 */
	public static final String COLOR_ICON = 
			String.format("%s%s%%s_icon.png", //$NON-NLS-1$
					PLUG_IN_RESOURCES_FOLDER, File.separator) ;

	/**
	 * Template for views to create the absolute path of the 
	 * miniature used by plug-ins.
	 * 
	 * <p>Takes one parameter: the identifier of the plug-in whose
	 * picture is requested.
	 */
	public static final String MINI_ICON  = 
			String.format("%s%s%%s_mini.png", //$NON-NLS-1$
					PLUG_IN_RESOURCES_FOLDER, File.separator) ;

}// interface FileConstants